package p {                   // `X` bound by package clause
import Console._              // `println` bound by wildcard import
object Y {
  println(s"L4: $X")          // `X` refers to `p.X` here
  locally {
    import q._                // `X` bound by wildcard import
    println(s"L7: $X")        // `X` refers to `q.X` here
    import X._                // `x` and `y` bound by wildcard import
    println(s"L9: $x")        // `x` refers to `q.X.x` here
    locally {
      val x = 3               // `x` bound by local definition
      println(s"L12: $x")     // `x` refers to constant `3` here
      locally {
        import q.X._          // `x` and `y` bound by wildcard import
        println(s"L15: $x")   // reference to `x` is ambiguous here
        import X.y            // `y` bound by explicit import
        println(s"L17: $y")   // `y` refers to `q.X.y` here
        locally {
          val x = "abc"       // `x` bound by local definition
          import p.X._        // `x` and `y` bound by wildcard import
          println(s"L21: $y") // reference to `y` is ambiguous here
          println(s"L22: $x") // `x` refers to string "abc" here
}}}}}}

